package model;

import model.Semana;

public class FechaHora {
	private Semana dia;
	private int hora;
	private int diaNro;
	
	public FechaHora(Semana unDia, int unaHora){
		this.dia= unDia;
		this.hora= unaHora;
		this.diaNro=0;
	}		
	
	public boolean cambioElDia(int numeroDeDia){
		return (this.diaNro != numeroDeDia);
	}
	
	public void actualizarHora(int horaActual){
		int horasTranscurridas;
		if (horaActual < this.hora){
			horasTranscurridas = horaActual + ( 24 - this.hora );
			
		}
		else { horasTranscurridas = horaActual - this.hora; }
		
		for(int horas = horasTranscurridas; horas > 0; horas--){
			if( this.hora == 24){
				//cuando se llega a las 24 horas el jugador duerme 8hrs
				this.hora = 1 + 8;
				//ActualizarDia es necesario para este caso...
				actualizarDia();
				
			}
			else{ this.hora++; }
		}
	}	

	public void actualizarDia(){
		Semana[] dias = Semana.values();
		Semana diaAModificar = this.dia;
		if (diaAModificar == Semana.DOMINGO){ this.dia = Semana.LUNES; }
		else {
			for ( int ubicacionDia = 0; ubicacionDia < 6; ubicacionDia++){
				if ( diaAModificar == dias[ubicacionDia]){
					this.dia = dias[ubicacionDia + 1];
					this.diaNro++;
				}
			}
			
		}
		
	}

	public int diferenciaDeDias(FechaHora otraFechaHora){
		Semana diaFinal = otraFechaHora.obtenerDia();
		int diasTranscurridos = 0;
		Semana[] dias = Semana.values();
		int i = 0;
		while ( (this.dia != diaFinal) && (diaFinal != dias[i]) )
			{ diasTranscurridos++; i++;}
	
		return ++diasTranscurridos;
	}
	
/*	public boolean compararCon(FechaHora otraFecha){
		return ( (this.dia == otraFecha.obtenerDia()) && (this.hora >= otraFecha.obtenerHora()) );
	}
*/	
	public int obtenerHora(){
		return this.hora;
	}
	
	public int obtenerNumeroDeDia(){
		return this.diaNro;		
	}
	
	public Semana obtenerDia(){
		return this.dia;
	}

}
	
	
	



